home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1994 / MacHack 1994.toast / MacHack™ 1987-1994 / MacHack™ '87 / Utilities ƒ / Icon Utilities ƒ / Icon Creation / icons < prev    next >
Text File  |  1986-04-07  |  7KB  |  133 lines

  1. Creating Your Own Icon
  2. (c) 1985 by Fred Huxham
  3.  
  4. The following is adapted from the forthcoming book, Using the Macintosh
  5. Toolbox, a book on writing Macintosh applications using the C programming
  6. language, by Fred A. Huxham, Dave Burnard, and Jim Takatsuka, published by
  7. SYBEX.
  8.  
  9. [Figures removed because this is an ASCII upload.]
  10.  
  11. Half the fun of writing your own application is creating and assigning its
  12. desktop icon.  For an application to have a custom icon, it must have a unique
  13. signature, and, in its resource fork, a number of Finder-related resources. 
  14. In this section we will examine file signatures and all the Finder-related
  15. resources an application needs in order to have a custom desktop icon.  While
  16. we are discussing each item required, we will be creating all the necessary
  17. resources to assign a custom icon to a sample application named SoundCODE.  To
  18. create each of the Finder-related resources, we will use the Resource Editor
  19. application.  The application SoundCODE is shown in Figure 1 with its generic
  20. application icon.
  21.  
  22. NOTE: To create a custom icon, you will need two applications, the Resource
  23. Editor, and an application that will allow you to set a file's creator and
  24. bundle bit (for example, the SetFile 2.0 desk accessory or the Fedit
  25. application).  A working knowledge of both the Resource Editor and the other
  26. program you choose to use is assumed.
  27.  
  28. File Signatures and Bundle Bits
  29.  
  30. In order to have a custom icon, a Macintosh application must have a unique
  31. signature that the Finder can identify it by.  An application's signature,
  32. often referred to as its creator, is a unique four-character sequence.  The
  33. creator must be unique in the respect that no other application on a currently
  34. mounted disk can have the same four-character signature.  In this example,
  35. we'll set the creator of our application SoundCODE to be the four character
  36. sequence FRED.
  37.  
  38. In addition to having a unique signature, an application must also have its
  39. bundle bit set.  The bundle bit, which is described briefly in Chapter 12, is
  40. one of the Finder flags.  When an application's bundle bit is set, the Finder
  41. copies the application's, ICN#, FREF, BNDL, and version data resources, if
  42. they have been created, into the Desktop file.  The version data, ICN#, FREF,
  43. and BNDL resources are the Finder-related resources we will learn how to
  44. create shortly.  The Desktop file is the invisible file on each disk that
  45. keeps track of all the custom icons for files and programs on the same disk. 
  46. Once an application has a unique signature and its finder-related resources
  47. have been copied to the desktop file, its custom icon will appear.
  48.  
  49. There are many applications and desk accessories that allow you to set a
  50. file's creator and bundle bit.  Fedit, a file and disk edit utility, and
  51. SetFile 2.0, a desk accessory, are two programs that do the job.  Figure 2
  52. shows SetFile 2.0 with the application SoundCODE selected, with its creator
  53. set to FRED and its bundle bit set.  It is important, when setting a file's
  54. creator and bundle bit, not to change any of its other fields or bits unless
  55. you know what you're doing, since doing so can often cause lots of problems.
  56.  
  57. Now let's move onto the four Finder-related resources.
  58.  
  59. Version Data Resources
  60.  
  61. Each application must also have a version data resource, a special resource
  62. that has the application's creator as its resource type.  Thus, our
  63. application, SoundCODE, will have a version data resource type of FRED.  We
  64. can create a resource of type FRED with the Resource Editor application.  When
  65. the resource type selector box of the Resource Editor appears on the screen,
  66. as shown in Figure 3, instead of selecting one of the standard resource types,
  67. type in the four-character sequence FRED.  The resource doesn't need any data
  68. entered into it and should have a resource ID of 0, as shown in Figure 4.
  69.  
  70. ICN# Resources
  71.  
  72. The ICN# or icon list resource is the actual custom icon for the application. 
  73. Creating an icon list resource is as easy as using fat bits in MacPaint. 
  74. Figure 5 shows the Resource Editor template for creating ICN# resources.  The
  75. icon on the upper-left is the application's desktop icon, and the icon on the
  76. upper-right is its icon mask.  The icon mask determines how the desktop icon
  77. will appear when it is clicked with the mouse or moved across different
  78. backgrounds.  A common situation is to have the icon mask the same as the
  79. icon.  For SoundCODE we set the ICN# resource ID to be128.
  80.  
  81. FREF Resources
  82.  
  83. A FREF or file reference resource needs to know only the type of the file the
  84. custom icon is being assigned to and the local ID of the custom icon.  We can
  85. determine a file's type with either Fedit or SetFile 2.0.  If we look back at
  86. Figure 2, we see that directly above the Creator field is the Type field.  The
  87. file type for SoundCODE, which is also the file type for any application
  88. program, is APPL.  Thus, for our sample program SoundCODE, we fill into the
  89. FREF resource pictured in Figure 6 the type APPL and the icon local ID of 0. 
  90. The icon local ID can be any number so long as it is consistent with the local
  91. ID that we specify in the BNDL resource, which we will do next.
  92.  
  93. The fileName field of a FREF indicates any file that should accompany the
  94. application if it is copied to another disk.  SoundCODE doesn't need any
  95. associated files, so we have left the field blank.  We have set SoundCODE's
  96. FREF resource ID to be 128.
  97.  
  98. BNDL Resources
  99.  
  100. The last resource type an application needs for a custom icon is a BNDL, a
  101. resource that serves to bundle everything together.  Refer to Figure 7, which
  102. shows the BNDL resource for SoundCODE, as we go over its fields one by one.
  103.  
  104. The first field, OwnerName, has to be set to the file's creator.  For
  105. SoundCODE, of course, the creator is FRED.  Next, the ownerID is set equal to
  106. the resource ID of the file's version data resource.  The resource ID of
  107. SoundCODE's  FRED, or version data resource is 0, so we fill in the ownerID
  108. field with 0.  We don't set the numTypes field, the Resource Editor sets it
  109. automatically.
  110.  
  111. Next let's set up the mapping between resources' local IDs and resource IDs. 
  112. These IDs can be set to whatever we want so long as we are consistent
  113. throughout all of the Finder-related resources.  First, we will set up the
  114. mapping for the icon list resource of SoundCODE.  We set the type field to
  115. ICN# for icon list, and then set the local ID to 0, as we did in the FREF
  116. resource.  Finally we set the resource ID to 128 as we did when we created the
  117. ICN#.  We then do the same thing for the file reference resource, setting the
  118. type field to FREF, the local ID to 0, and resource ID to 128.  The value for
  119. the # of this type field is not set by the programmer.  We set the BNDL
  120. resource to be 128.
  121.  
  122. Wrapping things up
  123.  
  124. Once SoundCODE's creator and bundle bit are set and all of the Finder-related
  125. resources are created, its new custom icon should appear as in Figure 8.
  126.  
  127. If you follow the general directions we have just given for creating a new
  128. icon and the new icon does not appear, it may be the case that the file or
  129. application you are creating the icon for previously had a custom icon
  130. assigned to it.  To force the new icon to appear, double-click the mouse on
  131. the Finder while holding down the Command and Option keys.  This throws out
  132. the old desktop file and recreates a new one, making your custom icon appear.